<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件处理</title>
    <!-- 引入 react核心库 -->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- 引入 react-dom 用于支持操作DOM -->
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <!-- 引入 babel 用于将 jsx转为 js -->
    <script type="text/javascript" src="../js/babel.min.js"></script>
</head>
<body>
    <div id="test"></div>

    <script type="text/babel">
        class Demo extends React.Component {

            /**
             *  (1) 通过onXxx 属性指定事件处理函数，注意大小写
             *      a. React 使用的是自定义（合成）事件，而不是原生的DOM事件  ----- 为了更好的兼容性
             *      b. React 中的事件是通过事件委托的方式去处理的(委托给最外层的元素)  ------ 为了高效
             *  (2) 通过 event.target 获取到发生事件的DOM对象       ----- 不要过度使用 ref
             */

            myRef = React.createRef();
            // 展示左侧输入框输入的数据
            showData = () => {
                console.log(this.myRef.current.value);
            }

            // 失去焦点事件处理函数 可以获取到发生事件的 DOM 元素
            showData2 = (event) => {
                //console.log(event.target.value);
                alert(event.target.value);
            }

            render() {
                return (
                    <div>
                        <input ref={ this.myRef } type="text" placeholder="点击按钮提示数据" />&nbsp;
                        <button onClick={this.showData}>点我提示左侧的数据</button>&nbsp;
                        <input  onBlur={this.showData2} type="text" placeholder="点击按钮提示数据" />&nbsp;
                    </div>
                )
            }
        }

        ReactDOM.render(<Demo />, document.getElementById("test"));
    </script>

</body>
</html>